package com.bdqn.ssm.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
//饿汉式： 类加载的时候就实例化对象了，这样做节约了时间，并且线程安全，但是浪费内存空间。如果该实例从始至终都没被使用过，则会造成内存浪费。

//懒汉式 ：需要使用实例的时候才去加载，这么做节约了内存空间，浪费了时间，线程不安全的。这种也叫做延迟加载。

//读取配置文件的工具类-单例模式
public class ConfigManager {
	private static ConfigManager configManager = new ConfigManager();//饿汉模式，先创建实例
	private static Properties properties;
	//私有构造器-读取数据库配置文件，私有构造器保证该类不能被随意创建实例
	private ConfigManager(){
		String configFile = "database.properties";
		properties = new Properties();
		InputStream is = 
				ConfigManager.class.getClassLoader().getResourceAsStream(configFile);
		try {
			properties.load(is);
			is.close();
		} catch (IOException e) {

			e.printStackTrace();
		}
	}
	/*//全局访问点,（懒汉模式）线程不安全，只有调用getInstance()时才创建实例
	public static synchronized ConfigManager getInstance(){
		if(configManager == null){
			configManager = new ConfigManager();
		}
		return configManager;
	}*/
	
   //饿汉模式，在调用getInstance()时，确保ConfigManager实例是存在的
	public static ConfigManager getInstance(){
		return configManager;
	}
	
	public static String getValue(String key){
		return properties.getProperty(key);
	}
}
